Ветвление
- Создать новую ветку
- Переключить на другую ветку
- Отсоединенный HEAD
- Переименовать ветку
- Удалить ветку
Ветка — это именованная ссылка на коммит. Например, ветка master или ветка origin/master.

Ветки нужны для того, чтобы в рамках одного репозитория можно было параллельно выполнять несколько задач. Каждая из веток содержит весь проект, но состояние этого проекта в каждой из веток свое. Например, в ветке master содержится проект в «рабочем» состоянии, готовый к использованию. В ветке release/1.5.4 содержится очередная новая версия проекта, которая готовится к выпуску. А в ветке develop ведется разработка будущей функциональности, которая появится в версиях 1.5.5 и старше.
Git позволяет легко создавать новые ветки на основе существующих, а затем объединять изменения разных веток, вливая их одну в другую.
Существует два типа веток: локальные ветки и ветки удаленного отслеживания. Они имеют разное назначение.
Локальные ветки (например, master на картинке) нужны для того, чтобы не запутаться в тех коммитах, которые вы делаете в локальном репозитории. Каждый раз, когда вы фиксируете изменения, в локальный репозиторий добавляется коммит. Локальная ветка всегда указывает на «текущий», последний коммит. Когда вы создаете следующий коммит, указатель ветки автоматически перемещается на него.
Начиная с любого коммита, содержащегося в вашей локальной ветке, вы можете создать новую ветку и разрабатывать в ней, например, какую-то новую функциональность. Параллельно и независимо от основной ветки. Когда ваша работа будет закончена, вы можете влить все свои изменения из этой ветки в основную.
Ветки удаленного отслеживания нужны тогда, когда вы работаете с удаленным репозиторием. Такие ветки обычно имеют составное название (например, origin/master на картинке).
Ваша ветка удаленного отслеживания всегда соответствует некоторой локальной ветке удаленного репозитория. На картинке ваша ветка удаленного отслеживания origin/master соответствует локальной ветке master, которая есть в удаленном репозитории origin. За тем, чтобы это соответствие было актуальным, Git следит каждый раз, когда вы получаете изменения из удаленного репозитория или помещаете их туда.
Благодаря этому вы можете использовать данные ветки origin/master для того, чтобы объединять их со своей локальной веткой или для того, чтобы отправлять свою локальную ветку в удаленный репозиторий.
Ветки удаленного отслеживания создаются автоматически в процессе клонирования удаленного репозитория. Также вы всегда можете вручную настроить соответствие вашей локальной ветки и некоторой ветки в удаленном репозитории.
Создать новую ветку
Основным способом создания новых веток является использование дополнительных возможностей, предоставляемых при этом 1C:EDT: создание новой информационной базы, для работы с этой веткой и использование снимков при переключении веток. Как это сделать, читайте здесь.
Кроме этого 1C:EDT позволяет создать новую ветку стандартными средствами Git, не учитывая специфику разработки в «1С:Предприятии». Это можно сделать несколькими способами:
- В панели История нажмите Создать ветку... в контекстном меню того коммита, от которого нужно начать новую ветку;
- В панели Репозитории Git нажмите Создать ветку... в контекстном меню ветки или метки.
Назначение полей:
- Источник — текущая ветка, извлеченная в рабочий каталог. Если нужно, вы можете выбрать в качестве источника другую ветку, нажав Выбрать. Если выбрана ветка, являющаяся веткой удаленного отслеживания, 1C:EDT предложить создать новую локальную ветку с тем же именем;
- Имя ветки — имя новой ветки;
- Настроить upstream для отправки и получения — установите
этот флажок, если хотите задать настройки исходного
репозитория и способ, которым будет выполняться операция
Получить и слить (получение изменений из исходного
репозитория и объединение их с текущей веткой):
- Перебазировать — изменения будут получены из исходного репозитория, после этого будет обновлена ветка удаленного отслеживания. Затем коммиты локальной ветки будут перебазированы поверх обновленной ветки удаленного отслеживания. Подробнее про перебазирование читайте здесь;
- Перебазировать с сохранением коммитов слияния — выполняется перебазирование как в первом случае, но при этом сохраняются коммиты слияния;
- Перебазировать интерактивно — выполняется интерактивное перебазирование коммитов локальной ветки поверх обновленной ветки удаленного отслеживания. Подробнее об интерактивном перебазировании читайте здесь;
- Объединить — изменения будут получены из исходного репозитория, после этого будет обновлена ветка удаленного отслеживания. Затем она будет влита в текущую ветку. Это стандартный способ, который используется в большинстве случаев.
- Извлечь новую ветку — если флажок установлен, то после создания новой ветки она сразу же будет извлечена в рабочий каталог, чтобы вы могли вносить в нее свои изменения. В противном случае просто будет создана новая ветка, а текущая ветка не изменится.
Переключить на другую ветку (checkout)
Переключить локальный репозиторий на другую ветку можно несколькими способами:
- В панели Навигатор нажмите в контекстном меню проекта. Если вы не видите нужную ветку, нажмите Другое...;
- В панели История нажмите Извлечь в контекстном меню коммита;
- В панели Репозитории Git дважды кликните на ветке или нажмите Извлечь в контекстном меню ветки.
Если для переключения вы выберите не существующую у вас локальную ветку, а ветку удаленного отслеживания, то тогда 1C:EDT спросит, как именно вы хотите ее извлечь:
- Check out as New Local Branch — создать новую локальную ветку и извлечь в нее ветку удаленного отслеживания для последующей модификации;
- Check out Commit — не создавать локальную ветку, а извлечь только коммит для просмотра. В этом случае локальный репозиторий перейдет в состояние Отсоединенный HEAD.
Подождите некоторое время, пока ветки переключатся. За ходом процесса можно наблюдать в правом нижнем углу экрана или в открытой панели Состояние.
Отсоединенный HEAD
«Отсоединенный HEAD» это такое состояние локального репозитория, при котором он содержит проект, соответствующий некоторому коммиту, но нет локальной ветки, извлеченной в рабочий каталог.
Например, у вас есть ветка master, извлеченная в рабочий каталог.

Если теперь вы извлечете коммит «второй коммит», то локальный репозиторий у вас окажется в состоянии «отсоединенный HEAD», ему не будет соответствовать ни одна ветка.

В таком состоянии вы можете просматривать все, что находится в рабочем каталоге. Например для того, чтобы узнать, как выглядело разрабатываемое приложение на момент коммита «второй коммит».
Однако в состоянии «отсоединенный HEAD» не нужно изменять проект, так как вы не сможете зафиксировать свои изменения. Они не будут принадлежать ни одной ветке.
Если вы хотите что-то изменять, сначала создайте новую ветку, находясь в таком состоянии, или сначала извлеките любую из существующих веток.
Переименовать ветку
Переименовать ветку можно несколькими способами:
- В панели Навигатор нажмите в контекстном меню проекта;
- В панели История нажмите Переименовать ветку... в контекстном меню коммита;
- В панели Репозитории Git нажмите Переименовать ветку... в контекстном меню ветки.
Удалить ветку
Удалить ветку можно несколькими способами:
- В панели История нажмите Удалить ветку... в контекстном меню коммита;
- В панели Репозитории Git нажмите Удалить ветку... в контекстном меню ветки.